package main

import (
	"flag"
	"fmt"
	"sync"

	"yu.DbSub/src/config"
	"yu.DbSub/src/distributed"
	"yu.DbSub/src/mysqlDb"
)

var wg sync.WaitGroup
var n = flag.String("n", "", "mysql节点信息")

func main() {
	flag.Parse()
	// "INSERT INTO table_name VALUES (value1,value2,value3);"

	if *n == "" { //如果无节点参数，则是manager进程
		fmt.Printf("必须输入站点信息")
	} else { //如果有node节点，则是所属节点的进程
		gotoNoder(*n)
	}
	wg.Wait()
}

func gotoNoder(n string) {
	nodeInfo := config.GetNode(n)
	if nodeInfo.Node_name == "" {
		fmt.Println("无相关节点的配置文件")
		return
	}
	err := mysqlDb.ConnectMysql(nodeInfo)
	if err != nil {
		fmt.Printf("数据库连接失败: %v\n", err)
	}
	wg.Add(1)
	go insert(n)
	wg.Wait()
}
func insert(n string) {
	etcd := distributed.GetEtcd()
	etcd.Watch("/sql/insert/"+n, insertHandle) //监听插入事件
	defer wg.Done()
}
func insertHandle(sql string) {
	fmt.Printf("sql: %v\n", sql)
	mysqlCli := mysqlDb.GetMysql()
	mysqlCli.InsertData(sql)
}
